package com.woniu108.evaluate.client;

import com.woniu108.carService.commos.dto.AccountDto;
import com.woniu108.carService.commos.dto.StoreDto;
import com.woniu108.carService.commos.dto.UserInfoDto;
import com.woniu108.carService.commos.model.Result;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @author LY
 */
@FeignClient(name = "person-server",path = "/person")
public interface PersonClient {
    /**
     * 根据id获取具体角色信息
     * @param id 模糊ID 可能是用户、管理员、门店管理员的ID
     * @return AccountDto 模糊账号信息 账号的ID 账号对应权限 账号所有人的名称(若为用户则展示昵称)
     */
    @GetMapping("/userInfo/getByCommonId/{id}.c")
    @ApiOperation("根据ID获取用户或管理员信息")
    @ApiImplicitParam(name = "id",value ="ID" )
    Result<AccountDto> getByCommonId(@PathVariable("id") String id);

    /**
     * 根据门店编号查找门店信息(含门店负责人姓名，多个显示为json字符串形式)
     * @param storeId 门店ID
     * @return StoreDto 门店详细信息
     */
    @GetMapping("/store/getStoreById/{storeId}.c")
    @ApiOperation("根据门店编号查找门店信息")
    @ApiImplicitParam(name = "storeId",value ="门店ID" )
    Result<StoreDto> getStoreById(@PathVariable("storeId")Integer storeId);

    /**
     * 获取用户信息
     * @param userId 用户id
     * @return 用户信息
     */
    @GetMapping("/userInfo/getByUserId/{userId}.c")
    Result<UserInfoDto> getByUserId(@PathVariable("userId")String userId);

    /**
     * 添加管理员操作历史记录
     * @param adminId 管理员编号
     * @param methodName 操作功能名称
     * @return result 是否正常访问接口结果
     */
    @GetMapping("/adminHistory/addAdminHistory.api")
    @ApiOperation("添加管理员操作历史记录")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "adminId",value = "管理员编号"),
            @ApiImplicitParam(name = "methodName",value = "操作功能名称")
    })
    public Result addAdminHistory(@RequestParam("adminId") String adminId, @RequestParam("methodName") String methodName);
}
